Gestion des phrases de passe et des en-têtes Luks
Table des matières
1 - Gestion des phrases de passe
1.2 - Ajout d'une nouvelle phrase de passe
•.luks accepte jusqu'à 8 phrases de passe. Pour afficher les slots occupés
•.si le type d'en-tête est luks v1
$ sudo cryptsetup luksDump /dev/sdb1 |grep ENABLED
Key Slot 0: ENABLED
•.si le test d'en-tête est luks v2
$ sudo cryptsetup luksDump /dev/sdb6 |grep luks2
0: luks2
1: luks2
•.Pour ajouter une nouvelle phrase de passe, il est nécessaire de fournir, une phrase de passe existante
•.soit de façon interactive
$ sudo cryptsetup luksAddKey /dev/sdb1
Entrez une phrase de passe existante :
Entrez une nouvelle phrase secrète pour l'emplacement de clé :
Vérifiez la phrase secrète :
•.soit sous forme de fichier de phrase de passe
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-file <chemin/fichier/phrase_existante>
Entrez une nouvelle phrase secrète pour l'emplacement de clé :
Vérifiez la phrase secrète :
•.La nouvelle clé peut-être également fournie sous la forme d'un fichier
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-file <chemin/fichier/phrase_existante> <chemin/fichier/phrase_nouvelle>
•.Le numéro de slot peut-être spécifié, par exemple 3 dans l'exemple ci-dessous :
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-slot 3
Attention : luks ne prévient pas si l'on supprime la dernière phrase de passe! Une fois la dernière phrase de passe supprimée, l'accès au conteneur et à son contenu sera définitivement perdu (sauf si recharge de l'entête : voir ci-dessous).
•.Pour supprimer une phrase de passe à partir d'une phrase de passe existante
•.de façon interactive
$ sudo cryptsetup luksRemoveKey /dev/sdb1
Entrez la phrase secrète à effacer :
•.à partir d'un fichier de phrase de passet
$ sudo cryptsetup luksRemoveKey /dev/sdb1 --key-file /etc/keys/passphrase
•.Pour supprimer une phrase de passe à partir de son numéro de position (slot), ici le slot 2, en fournissant une phrase de passe restante
$ sudo cryptsetup luksKillSlot /dev/sdb1 2
Entrez toute phrase secrète restante :
•.à partir de son numéro de position, ici le slot 2, en fournissant un fichier de phrase de passe restant
$ sudo cryptsetup luksKillSlot /dev/sdb1 2 --key-file /etc/keys/passphrase
•.Pour remplacer une phrase de passe existante
•.de façon interactive, entrer la commande, puis la phrase de passe ancienne et enfin la nouvelle
$ sudo cryptsetup luksChangeKey /dev/sdb1
Entrez la phrase secrète à changer :
Entrez la nouvelle phrase secrète :
Vérifiez la phrase secrète :
•.ou bien fournir les fichiers de clés, par exemple pour remplacer la clé boot.key (existante) par root.key (nouvelle) :
$ sudo cryptsetup luksChangeKey /dev/sdb2 --key-file boot.key root.key
L’en-tête luks et les phrases de passe qui y sont stockés ne sont pas protégés en cas de bloc ou secteur défectueux. La corruption de l'en-tête provoquera la perte de l'accès au conteneur et à son contenu.
Il est donc conseillé de sauvegarder l'en-tête, par exemple dans une ou des partitions non chiffrées (boot, ESP, ...) et dans un gestionnaire de mots de passe sauvegardé.
•.Pour sauvegarder l'en-tête
$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file <nom_fichier_backup>
$ sudo chown <user>:<user> <nom_fichier_backup>
.... et faire une sauvegarde du fichier!
•.Attention à ne pas se tromper d'en-tête pour la restauration, sous peine de risque de perte des données. Il est conseillé de tester l'en-tête dans un premier temps et de disposer d'un backup de la partition
$ sudo cryptsetup -v --header <nom_fichier_backup> luksOpen /dev/sdb1 test
•.Pour le restaurer
$ sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file <nom_fichier_backup>
WARNING!
========
Périphérique /dev/sdb1 contient déjà un en-tête LUKS. Remplacer l'en-tête détruira les emplacements de clés actuels.
Are you sure? (Type uppercase yes): YES
Sous réserve que le mot de passe n'ait pas été divulgué et que l'en-tête n'ait pas été recopié, la suppression de l'en-tête rend les données irrécupérables, ce qui peut-être utilisé comme méthode d'effacement des données.
•.Afficher les informations de l'en-tête et rechercher la valeur de l'offset indiquant le démarrage des donnée et donc la la taille de l'en-tête
$ sudo cryptsetup luksDump /dev/sdb1 |grep "offset:"
offset: 16777216 [bytes]
Area offset:32768 [bytes]
Dans le cas présent, l'offset est de 16777216 octets, soit 16 MiB
$ calc 16777216/1024/1024
16
•.Alternativement, exporter l'en-tête et utiliser la taille du fichier
$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file header
$ du -h header
16M header
•.Effacer l'en-tête
$ sudo dd if=/dev/zero of=/dev/sdb1 bs=1M count=16
16+0 enregistrements lus
16+0 enregistrements écrits
16777216 octets (17 MB, 16 MiB) copiés, 0,00894077 s, 1,9 GB/s